package edu.upc.clase.demo.dao.impl;

import edu.upc.clase.demo.dao.SalaDao;
import edu.upc.clase.demo.entity.Salas;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
public class SalaDaoImpl extends SimpleJdbcDaoSupport implements SalaDao{
    
  private static Logger log = LoggerFactory.getLogger(SalaDaoImpl.class);

    @Autowired
    public SalaDaoImpl(DataSource dataSource) {
        log.info("Asignando el dataSource");
        setDataSource(dataSource);
    }
    
    @Override
    public Integer insertar(Salas sala) {

        getJdbcTemplate().update(
                "insert into sala (nombre,direccion,aforo,caracteristicas,estado,local) values (?, ?, ?, ?, ?, ?)",
                sala.getNombre(), sala.getDireccion(), sala.getAforo(),sala.getCaracteristicas(),sala.getEstado(),sala.getLocal());
        return getSimpleJdbcTemplate().queryForInt("select last_insert_id()");
    }
    
    @Override
    public void actualizar(Salas sala) {
        getJdbcTemplate().update(
                "update sala set nombre = ?, direccion = ? where codigosala = ?",
                 sala.getNombre(), sala.getDireccion(), sala.getCodigoSala());
    }
    
    @Override
    public void eliminar(Salas sala) {
        getJdbcTemplate().update(
                "delete from sala where codigosala = ?", sala.getCodigoSala());
    }
    
    @Override
    public Salas buscar(Integer id) {
        try {
            return getSimpleJdbcTemplate().queryForObject(
                    "select codigosala,nombre,direccion,aforo,caracteristicas,estado,local from sala where codigosala=?",
                    new BeanPropertyRowMapper<Salas>(Salas.class), id);
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }
    
    @Override
    public List<Salas> buscarTodos() {
        return getSimpleJdbcTemplate().query(
                "select codigosala,nombre,direccion,aforo,caracteristicas,estado,local from sala",
                new BeanPropertyRowMapper<Salas>(Salas.class));
    }
}
